<?php
class PublicAction extends Action {
    // 检查用户是否登录
    protected function checkUser() {
        if(!session('?'.C('USER_LOGIN_AUTH'))) {
            $this->error('没有登录','/Public/login');
        }
    }

    // 顶部页面
    public function top() {
        C('SHOW_RUN_TIME',false);			// 运行时间显示
        C('SHOW_PAGE_TRACE',false);
        $this->display();
    }

    public function drag(){
        C('SHOW_PAGE_TRACE',false);
        C('SHOW_RUN_TIME',false);			// 运行时间显示
        $this->display();
    }

    // 尾部页面
    public function footer() {
        C('SHOW_RUN_TIME',false);			// 运行时间显示
        C('SHOW_PAGE_TRACE',false);
        $this->display();
    }

    // 菜单页面
    public function menu() {
        $this->checkUser();
        
        C('SHOW_RUN_TIME',false);			// 运行时间显示
        C('SHOW_PAGE_TRACE',false);
        $this->display();
    }

    // 用户登录页面
    public function login() {
        if(!session('?'.C('USER_LOGIN_AUTH'))) {
            $this->display();
        }else{
            $this->redirect('Index/index');
        }
    }

    public function index() {
        //如果通过认证跳转到首页
        redirect(__APP__);
    }

    // 用户登出
    public function logout() {
        if(session('?'.C('USER_LOGIN_AUTH'))) {
            session(null);
            $this->success('登出成功！',__URL__.'/login/');
        }else {
            $this->error('已经登出！');
        }
    }

    // 登录检测
    public function checkLogin() {
        if(empty($_POST['account'])) {
            $this->error('帐号错误！');
        }elseif (empty($_POST['password'])){
            $this->error('密码必须！');
        }elseif (empty($_POST['verify'])){
            $this->error('验证码必须！');
        }
        //生成认证条件
        $map            =   array();
        // 支持使用绑定帐号登录
        $map['user_name']	= $_POST['account'];
        if(session('verify') != md5($_POST['verify'])) {
            $this->error('验证码错误！');
        }
        $authInfo = M('admin_user')->where($map)->find();
        //使用用户名、密码和状态的方式进行认证
        if(false === $authInfo) {
            $this->error('帐号不存在或已禁用！');
        }else {
            if($authInfo['user_pass'] != md5($_POST['password'])) {
                $this->error('密码错误！');
            }
            session(C('USER_LOGIN_AUTH'), true);
            session('login_user_id', $authInfo['user_id']);
            session('login_true_name', $authInfo['true_name']);
            session('login_user_role', $authInfo['user_role']);
            
            if($authInfo['account']=='admin') {
            	session('administrator', true);
            }
            //保存登录信息
            $User	=	M('admin_user');
            $ip		=	get_client_ip();
            $time	=	date('YmdHis');
            $data = array();
            $data['user_id']	=	$authInfo['user_id'];
            $data['last_login_time']	=	$time;
            $User->save($data);
            $this->success('登录成功！');

        }
    }
    // 更换密码
    public function changePwd() {
        $this->checkUser();
        //对表单提交处理进行处理或者增加非表单数据
        if(md5($_POST['verify'])	!= session('verify')) {
            $this->error('验证码错误！');
        }
        $map	=	array();
        $map['user_pass']= md5($_POST['oldpassword']);
        if(session('login_user_id')) {
            $map['user_id']		=	session('login_user_id');
        }
        //检查用户
        $User    =   M("admin_user");
        if(!$User->where($map)->field('user_id')->find()) {
            $this->error('旧密码不符或者用户名错误！');
        }else {
            $User->user_pass	=	md5($_POST['password']);
            $User->save();
            $this->success('密码修改成功！');
         }
    }

    public function profile() {
        $this->checkUser();
        $User	 =	 M("User");
        $vo	=	$User->getById($_SESSION[C('USER_AUTH_KEY')]);
        $this->assign('vo',$vo);
        $this->display();
    }

    public function verify() {
        $type	 =	 isset($_GET['type'])?$_GET['type']:'gif';
        import("ORG.Util.Image");
        Image::buildImageVerify(4,1,$type);
    }

    // 修改资料
    public function change() {
        $this->checkUser();
        $User	 =	 D("User");
        if(!$User->create()) {
            $this->error($User->getError());
        }
        $result	=	$User->save();
        if(false !== $result) {
            $this->success('资料修改成功！');
        }else{
            $this->error('资料修改失败!');
        }
    }
}